<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h2>一、作用</h2>
  <div>v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true值的时候被渲染</div>
  <br>
  <div>v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法，其中 items 是源数据数组或者对象，而 item 则是被迭代的数组元素的别名</div>
  <br>
  <div>在 v-for 的时候，建议设置key值，并且保证每个key值是独一无二的，这便于diff算法进行优化</div>
  <h2>二、优先级</h2>
  <div>v-if与v-for都是vue模板系统中的指令,在vue模板编译的时候，会将指令系统转化成可执行的render函数</div>
  <br>
  <div>v-for优先级是比v-if高</div>
  <br>
  <div>这时候我们可以看到，v-for与v-if作用在不同标签时候，是先进行判断，再进行列表的渲染（v-for外包一层v-if判断）</div>
  <h2>三、注意事项</h2>
  <div>永远不要把 v-if 和 v-for 同时用在同一个元素上，带来性能方面的浪费（每次渲染都会先循环再进行条件判断）</div>
  <br>
  <div>如果避免出现这种情况，则在外层嵌套template（页面渲染不生成dom节点），在这一层进行v-if判断，然后在内部进行v-for循环</div>
  <br>
  <div>如果条件出现在循环内部，可通过计算属性computed提前过滤掉那些不需要显示的项</div>
</body>
</html>